using namespace std;

#include "Compuesto.h"

Compuesto::Compuesto(){}

void Compuesto::addComponente(Registro c){
	elementos.push_back(c);
	this->cantidadDeComponentes++;
}

int Compuesto::getCantidadComponentes()const{
	return this->cantidadDeComponentes;
}

Registro Compuesto::getComponente(int posicion)const{
	return this->elementos[posicion];
}

	//borra el registro y comprime los datos.
void Compuesto::borrarComponente(int posicion){
	this->elementos.erase(this->elementos.begin()+posicion);
}

int Compuesto::buscarComponente(list<string> claves){
	int pos = 0;
	while(pos < this->cantidadDeComponentes){
		int found = this->elementos[pos].esBuscado(claves);
		if(found == 0)
			return pos;
		pos++;
	}
	
	//si no lo encontro.
	return -1;
}

int Compuesto::getEspacioOcupado(){
	int pos = 0;
	int espacio = sizeof(int); //metadata de cantidad de registros
	while(pos < this->cantidadDeComponentes){
		espacio += this->elementos[pos].getTamanio();
		espacio += sizeof(int); // metadata de tamaño de registro
		pos++;
	}

	return espacio;
}
